/**
 * 格式化工具
 * @author hejiacheng
 * @date 2021-12-3
 */

import {
	verifyNumber
} from './verifyUtil'


/**
 * 获得秒
 * @param {时间对象} date 
 */
export function getSecond(date) {
	// 如果没有时间 返回 空串
	if (!date) {
		return ""
	}
	// 获取当前秒数(0-59)    
	let second = date.getSeconds()
	return second
}

/**
 * 获得分
 * @param {时间对象} date 
 */
export function getMinute(date) {
	// 如果没有时间 返回 空串
	if (!date) {
		return ""
	}
	// 获取当前分钟数(0-59)          
	let minute = date.getMinutes()
	return minute
}


/**
 * 获得时
 * @param {时间对象} date 
 */
export function getHour(date) {
	// 如果没有时间 返回 空串
	if (!date) {
		return ""
	}
	// 获取当前小时数(0-23)          
	let hour = date.getHours()
	return hour
}


/**
 * 获得年
 * @param {时间对象} date 
 */
export function getYear(date) {
	// 如果没有时间 返回 空串
	if (!date) {
		return ""
	}
	// 获取完整的年份(4位,1970-至今)
	let year = date.getFullYear()
	return year
}


/**
 * 获得月
 * @param {时间对象} date 
 */
export function getMonth(date) {
	// 如果没有时间 返回 空串
	if (!date) {
		return ""
	}
	// 获取当前月份(0-11,0代表1月)
	let month = date.getMonth() + 1
	return month
}


/**
 * 获得日
 * @param {时间对象} date 
 */
export function getDay(date) {
	// 如果没有时间 返回 空串
	if (!date) {
		return ""
	}
	// 获取当前日(1-31)         
	let day = date.getDate()
	return day
}

/**
 * 字符串 转 时间 对象
 * @param {时间字符串} dateStirng 
 */
export function getDate(dateStirng) {
	// 如果没有时间 返回 空串
	if (!dateStirng) {
		return ""
	}
	// 时间对象
	let date = new Date(Date.parse(dateStirng.replace(/-/g, "/")))
	return date
}

/**
 * 格式化时间
 * @param {时间字符串} dateStirng 
 */
export function formatTime(dateStirng) {
	// 如果没有时间 返回 空串
	if (!dateStirng) {
		return ""
	}
	// 时间对象
	let date = new Date(Date.parse(dateStirng.replace(/-/g, "/")))

	// 返回日期 直接返回年月日
	// 获取完整的年份(4位,1970-至今)
	let year = date.getFullYear()
	// 获取当前月份(0-11,0代表1月)
	let month = date.getMonth() + 1
	// 获取当前日(1-31)         
	let day = date.getDate()
	// 获取当前小时数(0-23)          
	let hour = date.getHours()
	// 获取当前分钟数(0-59)          
	let minute = date.getMinutes()
	// 获取当前秒数(0-59)    
	let second = date.getSeconds()
	return year + "-" + month + "-" + day + ' ' + hour + ":" + minute + ":" + second

	// 现在时间
	let nowDate = new Date()
	let dateTimestamp = date.getTime()
	let nowDateTimestamp = nowDate.getTime()

	// 两个时间间隔 秒 数
	let count_second = (nowDateTimestamp - dateTimestamp) / 1000

	// 几秒前
	if (count_second < 60) {
		let res_i = Math.floor(count_second)
		return res_i + "秒前"
	}
	// 几分钟前
	if (count_second < 60 * 60) {
		let res_i = Math.floor(count_second / 60)
		return res_i + "分钟前"
	}
	// 几小时前
	if (count_second < 24 * 60 * 60) {
		let res_i = Math.floor(count_second / (60 * 60))
		return res_i + "小时前"
	}
	// 几天前
	if (count_second < 30 * 24 * 60 * 60) {
		let res_i = Math.floor(count_second / (60 * 60 * 24))
		return res_i + "天前"
	}

	return year + "-" + month + "-" + day

}

/**
 * 两个时间比较大小
 * @param {时间字符串} date1 date2
 * @returns 返回 1 第一个时间比较大， 返回-1 第二个时间比较大 返回0 相等
 */
export function compareDate(date1, date2) {
	let year1 = date1.getYear()
	// 获取当前月份(0-11,0代表1月)
	let month1 = date1.getMonth() + 1
	// 获取当前日(1-31)         
	let day1 = date1.getDate()

	let year2 = date2.getYear()
	// 获取当前月份(0-11,0代表1月)
	let month2 = date2.getMonth() + 1
	// 获取当前日(1-31)         
	let day2 = date2.getDate()

	// 比较年月日
	if (year1 > year2) {
		return 1
	} else if (year1 < year2) {
		return -1
	} else {
		if (month1 > month2) {
			return 1
		} else if (month1 < month2) {
			return -1
		} else {
			if (day1 > day2) {
				return 1
			} else if (day1 < day2) {
				return -1
			} else {
				return 0
			}
		}
	}

}

/**
 * 两个时间比较大小
 * @param {时间字符串} date1 date2
 * @returns 返回 1 第一个时间比较大， 返回-1 第二个时间比较大 返回0 相等
 */
export function compareYearMonth(date1, date2) {
	let year1 = date1.getYear()
	// 获取当前月份(0-11,0代表1月)
	let month1 = date1.getMonth() + 1

	let year2 = date2.getYear()
	// 获取当前月份(0-11,0代表1月)
	let month2 = date2.getMonth() + 1

	// 比较年月日
	if (year1 > year2) {
		return 1
	} else if (year1 < year2) {
		return -1
	} else {
		if (month1 > month2) {
			return 1
		} else if (month1 < month2) {
			return -1
		} else {
			return 0
		}
	}

}

/**
 * 
 * @param {时间} date 
 * @param {增加的年份} addYear 
 * @param {增加的月份} addMonth 
 * @param {增加的天数} addDay 
 * @param {增加的小时} addHour 
 * @param {增加的分数} addMinute
 * @param {增加的秒数} addSecond 
 */
export function addDate(date, addYear = 0, addMonth = 0, addDay = 0, addHour = 0, addMinute = 0, addSecond = 0) {
	// 获取完整的年份(4位,1970-至今)
	let year = date.getFullYear()
	// 获取当前月份(0-11,0代表1月)
	let month = date.getMonth()
	// 获取当前日(1-31)         
	let day = date.getDate()
	// 获取当前小时数(0-23)          
	let hour = date.getHours()
	// 获取当前分钟数(0-59)          
	let minute = date.getMinutes()
	// 获取当前秒数(0-59)    
	let second = date.getSeconds()

	if (addYear != 0) {
		date.setFullYear(year + addYear)
	}
	if (addMonth != 0) {
		date.setMonth(month + addMonth)
	}
	if (addDay != 0) {
		date.setDate(day + addDay)
	}
	if (addHour != 0) {
		date.setHours(hour + addHour)
	}
	if (addMinute != 0) {
		date.setMinutes(minute + addMinute)
	}
	if (addSecond != 0) {
		date.setSeconds(second + addSecond)
	}

	return date
}


// let time = "2022-02-18 11:59:55"
// console.log("之前 date : ", formatTime(time), + "    之后： ", addDate(new Date(Date.parse(time.replace(/-/g, "/"))), 1, 1, 1, 1, 1, 1))